﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ferreteria.Forms.OrdenCompra
{
    public partial class frmAgregarArticulo : Form
    {
        private int articulo_id;
        private DisancoEntities context;
        private int proveedor_seleccionado_id;
        private int cantidad;

        Color bcProvSel = Color.LightGreen;
        Color sbcProvSel = Color.DarkGreen;
        Color bcProvNoSel = SystemColors.Window;
        Color sbcProvNoSel = SystemColors.Highlight;

        public frmAgregarArticulo(int Articulo)
        {
            InitializeComponent();

            this.articulo_id = Articulo;
            numCantidad.Select();
            
            
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);

            ArticulosdeCompra articulo = context.ArticulosdeCompra.FirstOrDefault(a => a.artc_id == this.articulo_id);
            txbArticuloNombre.Text = articulo.artc_descripcion;

            dgvProveedores.AutoGenerateColumns = false;

            //Se inicializa la variable con un valor muy grande
            decimal menorPrecio = Clases.Constantes.maximo_int32;

            //Se cargan los proveedores del articulo, junto con su precio de lista y bonificacion
            foreach (var prov in articulo.CatalogoProv)
            {
                int i = dgvProveedores.Rows.Add();

                dgvProveedores.Rows[i].Cells["prov_id"].Value = prov.provid;
                dgvProveedores.Rows[i].Cells["prov_nombre"].Value = prov.Proveedores.prov_nombre;
                dgvProveedores.Rows[i].Cells["prov_art_precio"].Value = prov.catalogoprecioart;
                dgvProveedores.Rows[i].Cells["prov_art_bonif"].Value = prov.catalogobonifart;
                dgvProveedores.Rows[i].Cells["prov_art_precio_bonificado"].Value = prov.catalogopreciobon;

                //En caso de tener un precio menor, se almacena su precio y su id
                if (prov.catalogopreciobon < menorPrecio)
                {
                    menorPrecio = Convert.ToDecimal(prov.catalogopreciobon);
                    proveedor_seleccionado_id = prov.provid;
                }
            }

            //Se busca la fila con el proveedor de menor precio y se la resalta
            foreach (DataGridViewRow fila in dgvProveedores.Rows)
            {
                int id = (int)fila.Cells["prov_id"].Value;

                if (id == proveedor_seleccionado_id)
                {
                    fila.DefaultCellStyle.BackColor = bcProvSel;
                    fila.DefaultCellStyle.SelectionBackColor = sbcProvSel;
                    break;
                }
            }
        }

        public int Proveedor
        {
            get { return proveedor_seleccionado_id; }
        }

        public int Cantidad
        {
            get { return cantidad; }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            this.cantidad = Convert.ToInt32(numCantidad.Value);
            this.Close();
        }        

        private void dgvProveedores_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //Se pintan todos los proveedores como no seleccionados
            foreach (DataGridViewRow fila in dgvProveedores.Rows)
            {
                fila.DefaultCellStyle.BackColor = bcProvNoSel;
                fila.DefaultCellStyle.SelectionBackColor = sbcProvNoSel;
            }

            //Se marca el proveedor correspondiente a la celda donde se produjo el evento doble click
            dgvProveedores.CurrentRow.DefaultCellStyle.BackColor = bcProvSel;
            dgvProveedores.CurrentRow.DefaultCellStyle.SelectionBackColor = sbcProvSel;
            this.proveedor_seleccionado_id = Convert.ToInt32(dgvProveedores.CurrentRow.Cells["prov_id"].Value);
        }
    }
}
